package com.shangcheng.server.service;

import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.shangcheng.dubbo.api.SmsFlashPromotionApi;
import com.shangcheng.model.domain.SmsFlashPromotion;
import com.shangcheng.model.vo.PageResult;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service;

@Service
public class SmsFlashPromotionService {

    @DubboReference
    private SmsFlashPromotionApi smsFlashPromotionApi;

    /**
     * 创建活动
     *
     * @param flashPromotion
     */
    public boolean create(SmsFlashPromotion flashPromotion) {
        //1.判断flashPromotion是否为空
        if (ObjectUtil.isEmpty(flashPromotion)) return false;
        //2.不为空就进行添加
        boolean flag = smsFlashPromotionApi.create(flashPromotion);
        return flag;
    }

    /**
     * 删除活动
     *
     * @param id
     */
    public boolean delete(Integer id) {
        boolean flag = smsFlashPromotionApi.delete(id);
        return flag;
    }

    /**
     * 编辑活动
     *
     * @param id
     * @param flashPromotion
     */
    public SmsFlashPromotion update(Integer id, SmsFlashPromotion flashPromotion) {
        //1.根据id进行查找是否有数据
        SmsFlashPromotion promotion = smsFlashPromotionApi.findById(id);
        //2.有数据仅进行修改
        if (ObjectUtil.isNotEmpty(promotion)) {
            flashPromotion.setId(id);
            smsFlashPromotionApi.update(flashPromotion);
        } else {
            //3.没数据进行保存
            smsFlashPromotionApi.create(flashPromotion);
        }
        return flashPromotion;
    }

    /**
     * 修改上下线状态
     *
     * @param id
     * @param status
     */
    public SmsFlashPromotion status(Integer id, Integer status) {
        //1.判断是否存在
        SmsFlashPromotion promotion = smsFlashPromotionApi.findById(id);
        //2.如果存在就进行修改,如果不存在就进行返回
        if (ObjectUtil.isEmpty(promotion)) return null;
        promotion.setStatus(status);
        return smsFlashPromotionApi.update(promotion);
    }

    /**
     * 获取活动详情
     *
     * @param id
     */
    public SmsFlashPromotion findCouponHistory(Integer id) {
        return smsFlashPromotionApi.findById(id);
    }

    /**
     * 根据活动名称分页查询
     *
     * @param pageNum
     * @param pageSize
     * @param keyword
     * @return
     */
    public PageResult list(Integer pageNum, Integer pageSize, String keyword) {
        //1.得到page分页数据
        IPage<SmsFlashPromotion> page = smsFlashPromotionApi.list(pageNum, pageSize, keyword);
        //2.封装PageRes
        PageResult pr = new PageResult();
        pr.setList(page.getRecords());
        pr.setPageNum(pageNum);
        pr.setPageSize(pageSize);
        pr.setTotal(Convert.toInt(page.getTotal()));
        pr.setTotalPage(Convert.toInt(page.getPages()));
        return pr;
    }
}
